
<!doctype html>
<html lang="zh" class="no-js">
  <head>
    
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width,initial-scale=1">
      
        <meta name="description" content="脚本文档">
      
      
        <meta name="author" content="Logan">
      
      
        <link rel="canonical" href="http://localhost:8000/installation/network_services/">
      
      
      
      
      <link rel="icon" href="../../image/favicon.ico">
      <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.50">
    
    
      
        <title>网络服务部署指南 - 运维无忧文档</title>
      
    
    
      <link rel="stylesheet" href="../../assets/stylesheets/main.a40c8224.min.css">
      
        
        <link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
      
      


    
    
      
    
    
      
        
        
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
        <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
      
    
    
      <link rel="stylesheet" href="../../css/extra.css">
    
      <link rel="stylesheet" href="../../css/prism.css">
    
    <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
    
      

    
    
    
  </head>
  
  
    
    
      
    
    
    
    
    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="blue">
  
    
    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
    <label class="md-overlay" for="__drawer"></label>
    <div data-md-component="skip">
      
        
        <a href="#_1" class="md-skip">
          跳转至
        </a>
      
    </div>
    <div data-md-component="announce">
      
    </div>
    
    
      

  

<header class="md-header md-header--shadow" data-md-component="header">
  <nav class="md-header__inner md-grid" aria-label="页眉">
    <a href="../.." title="运维无忧文档" class="md-header__button md-logo" aria-label="运维无忧文档" data-md-component="logo">
      
  <img src="../../image/logo.png" alt="logo">

    </a>
    <label class="md-header__button md-icon" for="__drawer">
      
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
    </label>
    <div class="md-header__title" data-md-component="header-title">
      <div class="md-header__ellipsis">
        <div class="md-header__topic">
          <span class="md-ellipsis">
            运维无忧文档
          </span>
        </div>
        <div class="md-header__topic" data-md-component="header-topic">
          <span class="md-ellipsis">
            
              网络服务部署指南
            
          </span>
        </div>
      </div>
    </div>
    
      
        <form class="md-header__option" data-md-component="palette">
  
    
    
    
    <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="blue"  aria-label="Switch to dark mode"  type="radio" name="__palette" id="__palette_0">
    
      <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"/></svg>
      </label>
    
  
    
    
    
    <input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="blue"  aria-label="Switch to light mode"  type="radio" name="__palette" id="__palette_1">
    
      <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"/></svg>
      </label>
    
  
</form>
      
    
    
      <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
    
    
    
      <label class="md-header__button md-icon" for="__search">
        
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
      </label>
      <div class="md-search" data-md-component="search" role="dialog">
  <label class="md-search__overlay" for="__search"></label>
  <div class="md-search__inner" role="search">
    <form class="md-search__form" name="search">
      <input type="text" class="md-search__input" name="query" aria-label="搜索" placeholder="搜索" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
      <label class="md-search__icon md-icon" for="__search">
        
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
        
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
      </label>
      <nav class="md-search__options" aria-label="查找">
        
        <button type="reset" class="md-search__icon md-icon" title="清空当前内容" aria-label="清空当前内容" tabindex="-1">
          
          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
        </button>
      </nav>
      
    </form>
    <div class="md-search__output">
      <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
        <div class="md-search-result" data-md-component="search-result">
          <div class="md-search-result__meta">
            正在初始化搜索引擎
          </div>
          <ol class="md-search-result__list" role="presentation"></ol>
        </div>
      </div>
    </div>
  </div>
</div>
    
    
      <div class="md-header__source">
        <a href="https://git.opsx.vip/docs/wuyou.run.git" title="前往仓库" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
  </div>
  <div class="md-source__repository">
    wuyou.run
  </div>
</a>
      </div>
    
  </nav>
  
</header>
    
    <div class="md-container" data-md-component="container">
      
      
        
          
        
      
      <main class="md-main" data-md-component="main">
        <div class="md-main__inner md-grid">
          
            
              
              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    



<nav class="md-nav md-nav--primary" aria-label="导航栏" data-md-level="0">
  <label class="md-nav__title" for="__drawer">
    <a href="../.." title="运维无忧文档" class="md-nav__button md-logo" aria-label="运维无忧文档" data-md-component="logo">
      
  <img src="../../image/logo.png" alt="logo">

    </a>
    运维无忧文档
  </label>
  
    <div class="md-nav__source">
      <a href="https://git.opsx.vip/docs/wuyou.run.git" title="前往仓库" class="md-source" data-md-component="source">
  <div class="md-source__icon md-icon">
    
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
  </div>
  <div class="md-source__repository">
    wuyou.run
  </div>
</a>
    </div>
  
  <ul class="md-nav__list" data-md-scrollfix>
    
      
      
  
  
  
  
    <li class="md-nav__item">
      <a href="../.." class="md-nav__link">
        
  
  <span class="md-ellipsis">
    首页
  </span>
  

      </a>
    </li>
  

    
      
      
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
        
          
          <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    Linux基础设施
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_2">
            <span class="md-nav__icon md-icon"></span>
            Linux基础设施
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_1" >
        
          
          <label class="md-nav__link" for="__nav_2_1" id="__nav_2_1_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    基础环境配置
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_1_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_2_1">
            <span class="md-nav__icon md-icon"></span>
            基础环境配置
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../system_init/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    系统初始化
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../dev_env/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    开发环境搭建
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

              
            
              
                
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_2" >
        
          
          <label class="md-nav__link" for="__nav_2_2" id="__nav_2_2_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    常用服务部署
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_2_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_2_2">
            <span class="md-nav__icon md-icon"></span>
            常用服务部署
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_2_1" >
        
          
          <label class="md-nav__link" for="__nav_2_2_1" id="__nav_2_2_1_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    Web服务与代理
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_2_1_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_2_2_1">
            <span class="md-nav__icon md-icon"></span>
            Web服务与代理
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../web_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Web服务
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../proxy_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    代理服务
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../services-loadbalancing/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    负载均衡服务
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../cache_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    缓存加速服务
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

              
            
              
                
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_2_2" >
        
          
          <label class="md-nav__link" for="__nav_2_2_2" id="__nav_2_2_2_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    数据存储
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_2_2_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_2_2_2">
            <span class="md-nav__icon md-icon"></span>
            数据存储
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../database_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    数据库服务
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../storage_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    文件存储服务
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

              
            
              
                
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_2_3" >
        
          
          <label class="md-nav__link" for="__nav_2_2_3" id="__nav_2_2_3_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    监控与日志
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_2_3_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_2_2_3">
            <span class="md-nav__icon md-icon"></span>
            监控与日志
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../monitoring_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    监控系统
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../logging_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    日志管理
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../message_queue_services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    消息队列
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

              
            
              
                
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3" >
        
          
          <label class="md-nav__link" for="__nav_2_3" id="__nav_2_3_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    系统运维
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_3_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_2_3">
            <span class="md-nav__icon md-icon"></span>
            系统运维
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../storage/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    存储与备份
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../lvm/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    LVM存储管理
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../network/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    网络服务配置
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../monitor/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    监控与日志
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

    
      
      
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
        
          
          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    容器与编排
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_3">
            <span class="md-nav__icon md-icon"></span>
            容器与编排
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1" >
        
          
          <label class="md-nav__link" for="__nav_3_1" id="__nav_3_1_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    Docker
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_1_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_3_1">
            <span class="md-nav__icon md-icon"></span>
            Docker
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../docker/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    基础安装
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../docker/build/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    镜像构建
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../docker/services/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    常用服务部署
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../docker/network-storage/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    网络与存储
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../docker-compose/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Docker Compose
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3" >
        
          
          <label class="md-nav__link" for="__nav_3_3" id="__nav_3_3_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    Kubernetes
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_3_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_3_3">
            <span class="md-nav__icon md-icon"></span>
            Kubernetes
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../kubernetes/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    集群部署
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../kubernetes/resources/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    资源管理
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../kubernetes/operations/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    运维操作
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../kubernetes/best-practices/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    最佳实践
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

    
      
      
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
        
          
          <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    DevOps工具链
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_4">
            <span class="md-nav__icon md-icon"></span>
            DevOps工具链
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../cicd/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    CI/CD流水线
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../devops/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    自动化运维
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

    
      
      
  
  
  
  
    
    
    
    
    <li class="md-nav__item md-nav__item--nested">
      
        
        
        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
        
          
          <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
            
  
  <span class="md-ellipsis">
    Shell 快速入门
  </span>
  

            <span class="md-nav__icon md-icon"></span>
          </label>
        
        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
          <label class="md-nav__title" for="__nav_5">
            <span class="md-nav__icon md-icon"></span>
            Shell 快速入门
          </label>
          <ul class="md-nav__list" data-md-scrollfix>
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../shell/introduction/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Linux 基础命令
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../shell/commands/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    常用命令集
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../shell/variables_and_data_types/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    变量和数据类型
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../shell/control_flow/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    控制流程 (if、else、for、while)
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../shell/functions/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Shell函数
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../shell/text_processing/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    文本处理三剑客
  </span>
  

      </a>
    </li>
  

              
            
              
                
  
  
  
  
    <li class="md-nav__item">
      <a href="../../shell/scripts/" class="md-nav__link">
        
  
  <span class="md-ellipsis">
    Shell脚本实战
  </span>
  

      </a>
    </li>
  

              
            
          </ul>
        </nav>
      
    </li>
  

    
  </ul>
</nav>
                  </div>
                </div>
              </div>
            
            
              
              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
                <div class="md-sidebar__scrollwrap">
                  <div class="md-sidebar__inner">
                    

<nav class="md-nav md-nav--secondary" aria-label="目录">
  
  
  
    
  
  
    <label class="md-nav__title" for="__toc">
      <span class="md-nav__icon md-icon"></span>
      目录
    </label>
    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
      
        <li class="md-nav__item">
  <a href="#dns" class="md-nav__link">
    <span class="md-ellipsis">
      DNS服务
    </span>
  </a>
  
    <nav class="md-nav" aria-label="DNS服务">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#bind9-dns" class="md-nav__link">
    <span class="md-ellipsis">
      BIND9 DNS服务器
    </span>
  </a>
  
    <nav class="md-nav" aria-label="BIND9 DNS服务器">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#bind9" class="md-nav__link">
    <span class="md-ellipsis">
      安装BIND9
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_2" class="md-nav__link">
    <span class="md-ellipsis">
      基本配置
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_3" class="md-nav__link">
    <span class="md-ellipsis">
      创建区域文件
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_4" class="md-nav__link">
    <span class="md-ellipsis">
      创建区域文件
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_5" class="md-nav__link">
    <span class="md-ellipsis">
      设置权限
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#bind9_1" class="md-nav__link">
    <span class="md-ellipsis">
      启动BIND9服务
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_6" class="md-nav__link">
    <span class="md-ellipsis">
      验证配置
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#dnsmasq-dns" class="md-nav__link">
    <span class="md-ellipsis">
      Dnsmasq 轻量级DNS服务器
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Dnsmasq 轻量级DNS服务器">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#dnsmasq" class="md-nav__link">
    <span class="md-ellipsis">
      安装Dnsmasq
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#dnsmasq_1" class="md-nav__link">
    <span class="md-ellipsis">
      配置Dnsmasq
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_7" class="md-nav__link">
    <span class="md-ellipsis">
      添加静态主机记录
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#dnsmasq_2" class="md-nav__link">
    <span class="md-ellipsis">
      启动Dnsmasq服务
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_8" class="md-nav__link">
    <span class="md-ellipsis">
      验证配置
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#vpn" class="md-nav__link">
    <span class="md-ellipsis">
      VPN服务
    </span>
  </a>
  
    <nav class="md-nav" aria-label="VPN服务">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#openvpn" class="md-nav__link">
    <span class="md-ellipsis">
      OpenVPN
    </span>
  </a>
  
    <nav class="md-nav" aria-label="OpenVPN">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#openvpn_1" class="md-nav__link">
    <span class="md-ellipsis">
      安装OpenVPN
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#pki" class="md-nav__link">
    <span class="md-ellipsis">
      配置PKI和证书
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#openvpn_2" class="md-nav__link">
    <span class="md-ellipsis">
      配置OpenVPN服务器
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_9" class="md-nav__link">
    <span class="md-ellipsis">
      创建客户端配置
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_10" class="md-nav__link">
    <span class="md-ellipsis">
      创建客户端配置生成脚本
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_11" class="md-nav__link">
    <span class="md-ellipsis">
      配置网络转发
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_12" class="md-nav__link">
    <span class="md-ellipsis">
      配置防火墙
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#openvpn_3" class="md-nav__link">
    <span class="md-ellipsis">
      启动OpenVPN服务
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_13" class="md-nav__link">
    <span class="md-ellipsis">
      生成客户端配置
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#wireguard-vpn" class="md-nav__link">
    <span class="md-ellipsis">
      WireGuard VPN
    </span>
  </a>
  
    <nav class="md-nav" aria-label="WireGuard VPN">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#wireguard" class="md-nav__link">
    <span class="md-ellipsis">
      安装WireGuard
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_14" class="md-nav__link">
    <span class="md-ellipsis">
      生成密钥
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#wireguard_1" class="md-nav__link">
    <span class="md-ellipsis">
      配置WireGuard服务器
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_15" class="md-nav__link">
    <span class="md-ellipsis">
      创建客户端配置
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_16" class="md-nav__link">
    <span class="md-ellipsis">
      配置系统
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#wireguard_2" class="md-nav__link">
    <span class="md-ellipsis">
      启动WireGuard
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_17" class="md-nav__link">
    <span class="md-ellipsis">
      代理服务
    </span>
  </a>
  
    <nav class="md-nav" aria-label="代理服务">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#squid" class="md-nav__link">
    <span class="md-ellipsis">
      Squid 代理服务器
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Squid 代理服务器">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#squid_1" class="md-nav__link">
    <span class="md-ellipsis">
      安装Squid
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_18" class="md-nav__link">
    <span class="md-ellipsis">
      基本配置
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#squid_2" class="md-nav__link">
    <span class="md-ellipsis">
      启动Squid服务
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_19" class="md-nav__link">
    <span class="md-ellipsis">
      验证配置
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#nginx" class="md-nav__link">
    <span class="md-ellipsis">
      Nginx 反向代理
    </span>
  </a>
  
    <nav class="md-nav" aria-label="Nginx 反向代理">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#nginx_1" class="md-nav__link">
    <span class="md-ellipsis">
      安装Nginx
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_20" class="md-nav__link">
    <span class="md-ellipsis">
      配置反向代理
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#nginx_2" class="md-nav__link">
    <span class="md-ellipsis">
      启动Nginx服务
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#ssh" class="md-nav__link">
    <span class="md-ellipsis">
      SSH服务高级配置
    </span>
  </a>
  
    <nav class="md-nav" aria-label="SSH服务高级配置">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#ssh_1" class="md-nav__link">
    <span class="md-ellipsis">
      SSH服务器加固
    </span>
  </a>
  
    <nav class="md-nav" aria-label="SSH服务器加固">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_21" class="md-nav__link">
    <span class="md-ellipsis">
      基本安全配置
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#ssh_2" class="md-nav__link">
    <span class="md-ellipsis">
      配置SSH密钥认证
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_22" class="md-nav__link">
    <span class="md-ellipsis">
      配置双因素认证
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
          <li class="md-nav__item">
  <a href="#sshbastion-host" class="md-nav__link">
    <span class="md-ellipsis">
      SSH跳板机(Bastion Host)设置
    </span>
  </a>
  
    <nav class="md-nav" aria-label="SSH跳板机(Bastion Host)设置">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#_23" class="md-nav__link">
    <span class="md-ellipsis">
      安装必要软件
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#ssh_3" class="md-nav__link">
    <span class="md-ellipsis">
      配置SSH跳板机
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_24" class="md-nav__link">
    <span class="md-ellipsis">
      通过跳板机访问内部服务器
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
        <li class="md-nav__item">
  <a href="#_25" class="md-nav__link">
    <span class="md-ellipsis">
      网络性能优化
    </span>
  </a>
  
    <nav class="md-nav" aria-label="网络性能优化">
      <ul class="md-nav__list">
        
          <li class="md-nav__item">
  <a href="#tcpip" class="md-nav__link">
    <span class="md-ellipsis">
      TCP/IP参数优化
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_26" class="md-nav__link">
    <span class="md-ellipsis">
      网络配置优化
    </span>
  </a>
  
</li>
        
          <li class="md-nav__item">
  <a href="#_27" class="md-nav__link">
    <span class="md-ellipsis">
      网络性能测试
    </span>
  </a>
  
</li>
        
      </ul>
    </nav>
  
</li>
      
    </ul>
  
</nav>
                  </div>
                </div>
              </div>
            
          
          
            <div class="md-content" data-md-component="content">
              <article class="md-content__inner md-typeset">
                
                  

  
  


<h1 id="_1">网络服务部署指南</h1>
<p>@author Loganli</p>
<h2 id="dns">DNS服务</h2>
<h3 id="bind9-dns">BIND9 DNS服务器</h3>
<h4 id="bind9">安装BIND9</h4>
<pre><code class="language-bash"># CentOS/RHEL
yum install -y bind bind-utils

# Debian/Ubuntu
apt-get update
apt-get install -y bind9 bind9utils dnsutils
</code></pre>
<h4 id="_2">基本配置</h4>
<p>编辑主配置文件 <code>/etc/named.conf</code> (CentOS/RHEL) 或 <code>/etc/bind/named.conf.options</code> (Debian/Ubuntu):</p>
<pre><code># CentOS/RHEL 配置示例
options {
    listen-on port 53 { any; };
    listen-on-v6 port 53 { ::1; };
    directory       &quot;/var/named&quot;;
    dump-file       &quot;/var/named/data/cache_dump.db&quot;;
    statistics-file &quot;/var/named/data/named_stats.txt&quot;;
    memstatistics-file &quot;/var/named/data/named_mem_stats.txt&quot;;
    recursion yes;
    allow-query     { any; };
    allow-recursion { trusted; };
    forwarders {
        8.8.8.8;
        8.8.4.4;
    };
    dnssec-enable yes;
    dnssec-validation yes;
    managed-keys-directory &quot;/var/named/dynamic&quot;;
};

# Debian/Ubuntu 配置示例 (named.conf.options)
options {
    directory &quot;/var/cache/bind&quot;;
    listen-on { any; };
    allow-query { any; };
    allow-recursion { trusted; };
    forwarders {
        8.8.8.8;
        8.8.4.4;
    };
    dnssec-validation auto;
    auth-nxdomain no;
};
</code></pre>
<h4 id="_3">创建区域文件</h4>
<p>在 <code>/etc/named.conf.local</code> (Debian/Ubuntu) 或 <code>/etc/named.conf</code> 的末尾 (CentOS/RHEL) 添加区域定义:</p>
<pre><code># 正向区域
zone &quot;example.com&quot; IN {
    type master;
    file &quot;/var/named/example.com.zone&quot;;  # CentOS/RHEL
    # file &quot;/var/lib/bind/example.com.zone&quot;;  # Debian/Ubuntu
    allow-update { none; };
};

# 反向区域
zone &quot;1.168.192.in-addr.arpa&quot; IN {
    type master;
    file &quot;/var/named/192.168.1.zone&quot;;  # CentOS/RHEL
    # file &quot;/var/lib/bind/192.168.1.zone&quot;;  # Debian/Ubuntu
    allow-update { none; };
};
</code></pre>
<h4 id="_4">创建区域文件</h4>
<p>创建正向解析文件 <code>/var/named/example.com.zone</code> (CentOS/RHEL) 或 <code>/var/lib/bind/example.com.zone</code> (Debian/Ubuntu):</p>
<pre><code>$TTL 86400
@       IN      SOA     ns1.example.com. admin.example.com. (
                        2023062701      ; Serial
                        3600            ; Refresh
                        1800            ; Retry
                        604800          ; Expire
                        86400           ; Minimum TTL
)
; 名称服务器
@       IN      NS      ns1.example.com.
@       IN      NS      ns2.example.com.

; A记录
@       IN      A       192.168.1.100
ns1     IN      A       192.168.1.10
ns2     IN      A       192.168.1.11
www     IN      A       192.168.1.100
mail    IN      A       192.168.1.200

; MX记录
@       IN      MX      10      mail.example.com.

; CNAME记录
ftp     IN      CNAME   www.example.com.
</code></pre>
<p>创建反向解析文件 <code>/var/named/192.168.1.zone</code> (CentOS/RHEL) 或 <code>/var/lib/bind/192.168.1.zone</code> (Debian/Ubuntu):</p>
<pre><code>$TTL 86400
@       IN      SOA     ns1.example.com. admin.example.com. (
                        2023062701      ; Serial
                        3600            ; Refresh
                        1800            ; Retry
                        604800          ; Expire
                        86400           ; Minimum TTL
)
; 名称服务器
@       IN      NS      ns1.example.com.
@       IN      NS      ns2.example.com.

; PTR记录
10      IN      PTR     ns1.example.com.
11      IN      PTR     ns2.example.com.
100     IN      PTR     www.example.com.
200     IN      PTR     mail.example.com.
</code></pre>
<h4 id="_5">设置权限</h4>
<pre><code class="language-bash"># CentOS/RHEL
chown named:named /var/named/*.zone

# Debian/Ubuntu
chown bind:bind /var/lib/bind/*.zone
</code></pre>
<h4 id="bind9_1">启动BIND9服务</h4>
<pre><code class="language-bash"># CentOS/RHEL
systemctl start named
systemctl enable named
systemctl status named

# Debian/Ubuntu
systemctl start bind9
systemctl enable bind9
systemctl status bind9
</code></pre>
<h4 id="_6">验证配置</h4>
<pre><code class="language-bash"># 检查配置语法
named-checkconf

# 检查区域文件语法
# CentOS/RHEL
named-checkzone example.com /var/named/example.com.zone
named-checkzone 1.168.192.in-addr.arpa /var/named/192.168.1.zone

# Debian/Ubuntu
named-checkzone example.com /var/lib/bind/example.com.zone
named-checkzone 1.168.192.in-addr.arpa /var/lib/bind/192.168.1.zone

# 测试解析
dig @localhost example.com
dig @localhost -x 192.168.1.100
</code></pre>
<h3 id="dnsmasq-dns">Dnsmasq 轻量级DNS服务器</h3>
<h4 id="dnsmasq">安装Dnsmasq</h4>
<pre><code class="language-bash"># CentOS/RHEL
yum install -y dnsmasq

# Debian/Ubuntu
apt-get update
apt-get install -y dnsmasq
</code></pre>
<h4 id="dnsmasq_1">配置Dnsmasq</h4>
<p>编辑配置文件 <code>/etc/dnsmasq.conf</code>:</p>
<pre><code># 基本配置
domain-needed
bogus-priv
no-resolv
no-poll
expand-hosts
domain=example.local

# 上游DNS服务器
server=8.8.8.8
server=8.8.4.4

# 缓存设置
cache-size=1000

# 监听接口
interface=eth0
listen-address=127.0.0.1
listen-address=192.168.1.10

# DHCP配置 (可选)
dhcp-range=192.168.1.50,192.168.1.150,12h
dhcp-option=option:router,192.168.1.1
dhcp-option=option:dns-server,192.168.1.10
dhcp-option=option:netmask,255.255.255.0

# 静态主机记录
address=/www.example.local/192.168.1.100
address=/mail.example.local/192.168.1.200
</code></pre>
<h4 id="_7">添加静态主机记录</h4>
<p>编辑 <code>/etc/hosts</code> 或创建独立的 <code>/etc/dnsmasq.hosts</code> 文件并在 dnsmasq.conf 中添加 <code>addn-hosts=/etc/dnsmasq.hosts</code>:</p>
<pre><code>192.168.1.10 ns1.example.local
192.168.1.100 www.example.local
192.168.1.200 mail.example.local
</code></pre>
<h4 id="dnsmasq_2">启动Dnsmasq服务</h4>
<pre><code class="language-bash">systemctl start dnsmasq
systemctl enable dnsmasq
systemctl status dnsmasq
</code></pre>
<h4 id="_8">验证配置</h4>
<pre><code class="language-bash"># 测试解析
dig @localhost www.example.local
nslookup mail.example.local 127.0.0.1
</code></pre>
<h2 id="vpn">VPN服务</h2>
<h3 id="openvpn">OpenVPN</h3>
<h4 id="openvpn_1">安装OpenVPN</h4>
<pre><code class="language-bash"># CentOS/RHEL
yum install -y epel-release
yum install -y openvpn easy-rsa

# Debian/Ubuntu
apt-get update
apt-get install -y openvpn easy-rsa
</code></pre>
<h4 id="pki">配置PKI和证书</h4>
<pre><code class="language-bash"># 创建PKI目录
mkdir -p /etc/openvpn/easy-rsa
cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

# 初始化PKI
cd /etc/openvpn/easy-rsa
./easyrsa init-pki

# 创建CA证书
./easyrsa build-ca

# 创建服务器证书
./easyrsa build-server-full server nopass

# 创建客户端证书
./easyrsa build-client-full client1 nopass

# 创建Diffie-Hellman参数
./easyrsa gen-dh

# 创建TLS认证密钥
openvpn --genkey --secret /etc/openvpn/ta.key
</code></pre>
<h4 id="openvpn_2">配置OpenVPN服务器</h4>
<p>创建服务器配置文件 <code>/etc/openvpn/server.conf</code>:</p>
<pre><code># 基本设置
port 1194
proto udp
dev tun

# 证书设置
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
tls-auth /etc/openvpn/ta.key 0

# 网络设置
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push &quot;redirect-gateway def1 bypass-dhcp&quot;
push &quot;dhcp-option DNS 8.8.8.8&quot;
push &quot;dhcp-option DNS 8.8.4.4&quot;
client-to-client
keepalive 10 120

# 安全设置
cipher AES-256-CBC
auth SHA256
compress lz4-v2
push &quot;compress lz4-v2&quot;
user nobody
group nobody
persist-key
persist-tun

# 日志设置
status /var/log/openvpn/status.log
log-append /var/log/openvpn/openvpn.log
verb 3
</code></pre>
<h4 id="_9">创建客户端配置</h4>
<p>创建客户端配置模板 <code>/etc/openvpn/client-template.txt</code>:</p>
<pre><code>client
dev tun
proto udp
remote your_server_ip 1194
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
auth SHA256
compress lz4-v2
verb 3
</code></pre>
<h4 id="_10">创建客户端配置生成脚本</h4>
<p>创建 <code>/etc/openvpn/make_client_config.sh</code>:</p>
<pre><code class="language-bash">#!/bin/bash

# 第一个参数作为客户端名称
CLIENT=$1
OUTPUT_DIR=&quot;/etc/openvpn/clients&quot;
BASE_CONFIG=&quot;/etc/openvpn/client-template.txt&quot;

# 创建输出目录
mkdir -p ${OUTPUT_DIR}

# 生成客户端配置文件
cat ${BASE_CONFIG} \
    &lt;(echo -e '&lt;ca&gt;') \
    /etc/openvpn/easy-rsa/pki/ca.crt \
    &lt;(echo -e '&lt;/ca&gt;\n&lt;cert&gt;') \
    /etc/openvpn/easy-rsa/pki/issued/${CLIENT}.crt \
    &lt;(echo -e '&lt;/cert&gt;\n&lt;key&gt;') \
    /etc/openvpn/easy-rsa/pki/private/${CLIENT}.key \
    &lt;(echo -e '&lt;/key&gt;\n&lt;tls-auth&gt;') \
    /etc/openvpn/ta.key \
    &lt;(echo -e '&lt;/tls-auth&gt;') \
    &gt; ${OUTPUT_DIR}/${CLIENT}.ovpn

echo &quot;客户端配置文件已生成: ${OUTPUT_DIR}/${CLIENT}.ovpn&quot;
</code></pre>
<p>设置执行权限:</p>
<pre><code class="language-bash">chmod +x /etc/openvpn/make_client_config.sh
</code></pre>
<h4 id="_11">配置网络转发</h4>
<p>编辑 <code>/etc/sysctl.conf</code>:</p>
<pre><code>net.ipv4.ip_forward = 1
</code></pre>
<p>应用配置:</p>
<pre><code class="language-bash">sysctl -p
</code></pre>
<h4 id="_12">配置防火墙</h4>
<pre><code class="language-bash"># CentOS/RHEL (firewalld)
firewall-cmd --permanent --add-service=openvpn
firewall-cmd --permanent --add-masquerade
PRIVATE_SUBNET=&quot;10.8.0.0/24&quot;
PRIVATE_INTERFACE=&quot;tun0&quot;
PUBLIC_INTERFACE=&quot;eth0&quot;
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s ${PRIVATE_SUBNET} -o ${PUBLIC_INTERFACE} -j MASQUERADE
firewall-cmd --reload

# Debian/Ubuntu (UFW)
ufw allow 1194/udp
ufw allow OpenSSH
echo &quot;net/ipv4/ip_forward=1&quot; &gt;&gt; /etc/ufw/sysctl.conf
PUBLIC_INTERFACE=&quot;eth0&quot;
echo &quot;# START OPENVPN RULES&quot; &gt;&gt; /etc/ufw/before.rules
echo &quot;# NAT table rules&quot; &gt;&gt; /etc/ufw/before.rules
echo &quot;*nat&quot; &gt;&gt; /etc/ufw/before.rules
echo &quot;:POSTROUTING ACCEPT [0:0]&quot; &gt;&gt; /etc/ufw/before.rules
echo &quot;-A POSTROUTING -s 10.8.0.0/24 -o ${PUBLIC_INTERFACE} -j MASQUERADE&quot; &gt;&gt; /etc/ufw/before.rules
echo &quot;COMMIT&quot; &gt;&gt; /etc/ufw/before.rules
echo &quot;# END OPENVPN RULES&quot; &gt;&gt; /etc/ufw/before.rules
ufw disable
ufw enable
</code></pre>
<h4 id="openvpn_3">启动OpenVPN服务</h4>
<pre><code class="language-bash"># 创建日志目录
mkdir -p /var/log/openvpn
chmod 755 /var/log/openvpn

# 启动服务
systemctl start openvpn@server
systemctl enable openvpn@server
systemctl status openvpn@server
</code></pre>
<h4 id="_13">生成客户端配置</h4>
<pre><code class="language-bash">/etc/openvpn/make_client_config.sh client1
</code></pre>
<h3 id="wireguard-vpn">WireGuard VPN</h3>
<h4 id="wireguard">安装WireGuard</h4>
<pre><code class="language-bash"># CentOS/RHEL 8
dnf install -y elrepo-release epel-release
dnf install -y kmod-wireguard wireguard-tools

# CentOS/RHEL 7
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
curl -Lo /etc/yum.repos.d/wireguard.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
yum install -y wireguard-dkms wireguard-tools

# Debian/Ubuntu
apt-get update
apt-get install -y wireguard
</code></pre>
<h4 id="_14">生成密钥</h4>
<pre><code class="language-bash"># 创建配置目录
mkdir -p /etc/wireguard
chmod 700 /etc/wireguard

# 生成服务器密钥对
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey &gt; /etc/wireguard/server_public.key
chmod 600 /etc/wireguard/server_private.key

# 生成客户端密钥对
wg genkey | tee /etc/wireguard/client1_private.key | wg pubkey &gt; /etc/wireguard/client1_public.key
chmod 600 /etc/wireguard/client1_private.key
</code></pre>
<h4 id="wireguard_1">配置WireGuard服务器</h4>
<p>创建 <code>/etc/wireguard/wg0.conf</code> 配置文件:</p>
<pre><code>[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = server_private_key_here
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# 客户端1
[Peer]
PublicKey = client1_public_key_here
AllowedIPs = 10.0.0.2/32
</code></pre>
<p>替换密钥:</p>
<pre><code class="language-bash">SERVER_PRIVATE_KEY=$(cat /etc/wireguard/server_private.key)
CLIENT1_PUBLIC_KEY=$(cat /etc/wireguard/client1_public.key)

sed -i &quot;s|server_private_key_here|${SERVER_PRIVATE_KEY}|g&quot; /etc/wireguard/wg0.conf
sed -i &quot;s|client1_public_key_here|${CLIENT1_PUBLIC_KEY}|g&quot; /etc/wireguard/wg0.conf
</code></pre>
<h4 id="_15">创建客户端配置</h4>
<p>创建 <code>/etc/wireguard/client1.conf</code> 配置文件:</p>
<pre><code>[Interface]
PrivateKey = client1_private_key_here
Address = 10.0.0.2/24
DNS = 8.8.8.8, 8.8.4.4

[Peer]
PublicKey = server_public_key_here
Endpoint = server_public_ip:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
</code></pre>
<p>替换密钥:</p>
<pre><code class="language-bash">CLIENT1_PRIVATE_KEY=$(cat /etc/wireguard/client1_private.key)
SERVER_PUBLIC_KEY=$(cat /etc/wireguard/server_public.key)
SERVER_PUBLIC_IP=&quot;your_server_ip&quot;

sed -i &quot;s|client1_private_key_here|${CLIENT1_PRIVATE_KEY}|g&quot; /etc/wireguard/client1.conf
sed -i &quot;s|server_public_key_here|${SERVER_PUBLIC_KEY}|g&quot; /etc/wireguard/client1.conf
sed -i &quot;s|server_public_ip|${SERVER_PUBLIC_IP}|g&quot; /etc/wireguard/client1.conf
</code></pre>
<h4 id="_16">配置系统</h4>
<pre><code class="language-bash"># 启用IP转发
echo &quot;net.ipv4.ip_forward = 1&quot; &gt;&gt; /etc/sysctl.conf
sysctl -p

# 配置防火墙
# CentOS/RHEL (firewalld)
firewall-cmd --permanent --add-port=51820/udp
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload

# Debian/Ubuntu (UFW)
ufw allow 51820/udp
ufw reload
</code></pre>
<h4 id="wireguard_2">启动WireGuard</h4>
<pre><code class="language-bash"># 启动WireGuard
systemctl start wg-quick@wg0
systemctl enable wg-quick@wg0
systemctl status wg-quick@wg0

# 检查接口状态
wg show
</code></pre>
<h2 id="_17">代理服务</h2>
<h3 id="squid">Squid 代理服务器</h3>
<h4 id="squid_1">安装Squid</h4>
<pre><code class="language-bash"># CentOS/RHEL
yum install -y squid

# Debian/Ubuntu
apt-get update
apt-get install -y squid
</code></pre>
<h4 id="_18">基本配置</h4>
<p>编辑 <code>/etc/squid/squid.conf</code>:</p>
<pre><code># 定义允许的网络
acl localnet src 192.168.1.0/24   # 替换为您的内部网络
acl Safe_ports port 80            # http
acl Safe_ports port 21            # ftp
acl Safe_ports port 443           # https
acl Safe_ports port 70            # gopher
acl Safe_ports port 210           # wais
acl Safe_ports port 1025-65535    # unregistered ports
acl Safe_ports port 280           # http-mgmt
acl Safe_ports port 488           # gss-http
acl Safe_ports port 591           # filemaker
acl Safe_ports port 777           # multiling http
acl CONNECT method CONNECT

# 定义访问控制
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all

# 配置Squid
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320
</code></pre>
<h4 id="squid_2">启动Squid服务</h4>
<pre><code class="language-bash">systemctl start squid
systemctl enable squid
systemctl status squid
</code></pre>
<h4 id="_19">验证配置</h4>
<pre><code class="language-bash"># 测试代理
curl -x http://localhost:3128 http://www.google.com
</code></pre>
<h3 id="nginx">Nginx 反向代理</h3>
<h4 id="nginx_1">安装Nginx</h4>
<pre><code class="language-bash"># CentOS/RHEL
yum install -y epel-release
yum install -y nginx

# Debian/Ubuntu
apt-get update
apt-get install -y nginx
</code></pre>
<h4 id="_20">配置反向代理</h4>
<p>创建 <code>/etc/nginx/conf.d/proxy.conf</code>:</p>
<pre><code>server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

upstream backend_server {
    server 192.168.1.100:8080;
    server 192.168.1.101:8080 backup;
}
</code></pre>
<h4 id="nginx_2">启动Nginx服务</h4>
<pre><code class="language-bash">systemctl start nginx
systemctl enable nginx
systemctl status nginx
</code></pre>
<h2 id="ssh">SSH服务高级配置</h2>
<h3 id="ssh_1">SSH服务器加固</h3>
<h4 id="_21">基本安全配置</h4>
<p>编辑 <code>/etc/ssh/sshd_config</code>:</p>
<pre><code># 禁用root登录
PermitRootLogin no

# 禁用密码认证
PasswordAuthentication no

# 启用密钥认证
PubkeyAuthentication yes

# 指定允许的用户
AllowUsers user1 user2

# 指定SSH版本
Protocol 2

# 修改默认端口 (可选)
Port 2222

# 设置超时时间
ClientAliveInterval 300
ClientAliveCountMax 2

# 禁用X11转发
X11Forwarding no

# 禁用空密码
PermitEmptyPasswords no

# 限制最大认证尝试次数
MaxAuthTries 3

# 限制最大会话数
MaxSessions 4
</code></pre>
<h4 id="ssh_2">配置SSH密钥认证</h4>
<p>在客户端:</p>
<pre><code class="language-bash"># 生成SSH密钥对
ssh-keygen -t ed25519 -C &quot;your_email@example.com&quot;

# 将公钥上传到服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip
</code></pre>
<h4 id="_22">配置双因素认证</h4>
<p>安装Google Authenticator模块:</p>
<pre><code class="language-bash"># CentOS/RHEL
yum install -y google-authenticator

# Debian/Ubuntu
apt-get update
apt-get install -y libpam-google-authenticator
</code></pre>
<p>配置PAM模块:</p>
<p>编辑 <code>/etc/pam.d/sshd</code>:</p>
<pre><code># 在文件开头添加
auth required pam_google_authenticator.so
</code></pre>
<p>编辑 <code>/etc/ssh/sshd_config</code>:</p>
<pre><code># 启用挑战响应认证
ChallengeResponseAuthentication yes
# 启用PAM
UsePAM yes
# 配置身份验证方法
AuthenticationMethods publickey,keyboard-interactive
</code></pre>
<p>设置用户的Google Authenticator:</p>
<pre><code class="language-bash"># 切换到目标用户
su - username

# 运行Google Authenticator设置
google-authenticator
</code></pre>
<p>重启SSH服务:</p>
<pre><code class="language-bash">systemctl restart sshd
</code></pre>
<h3 id="sshbastion-host">SSH跳板机(Bastion Host)设置</h3>
<h4 id="_23">安装必要软件</h4>
<pre><code class="language-bash"># CentOS/RHEL
yum install -y openssh-server openssh-clients

# Debian/Ubuntu
apt-get update
apt-get install -y openssh-server openssh-client
</code></pre>
<h4 id="ssh_3">配置SSH跳板机</h4>
<p>编辑 <code>/etc/ssh/sshd_config</code>:</p>
<pre><code># 基本安全设置
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
X11Forwarding no
PermitEmptyPasswords no
MaxAuthTries 3

# 启用登录审计
LogLevel VERBOSE

# 允许TCP转发
AllowTcpForwarding yes

# 禁止代理转发
AllowAgentForwarding no

# 允许的用户
AllowUsers bastion_user
</code></pre>
<p>创建专用的jumper用户:</p>
<pre><code class="language-bash">useradd -m -s /bin/bash jumper
mkdir -p /home/jumper/.ssh
touch /home/jumper/.ssh/authorized_keys
chmod 700 /home/jumper/.ssh
chmod 600 /home/jumper/.ssh/authorized_keys
chown -R jumper:jumper /home/jumper/.ssh
</code></pre>
<h4 id="_24">通过跳板机访问内部服务器</h4>
<p>在客户端 <code>~/.ssh/config</code> 文件中配置:</p>
<pre><code># 跳板机
Host bastion
    HostName bastion.example.com
    User jumper
    Port 22
    IdentityFile ~/.ssh/id_ed25519

# 通过跳板机访问内部服务器
Host internal-server
    HostName 192.168.1.100
    User internal_user
    Port 22
    IdentityFile ~/.ssh/id_ed25519
    ProxyJump bastion
</code></pre>
<p>使用命令连接:</p>
<pre><code class="language-bash"># 连接内部服务器
ssh internal-server
</code></pre>
<h2 id="_25">网络性能优化</h2>
<h3 id="tcpip">TCP/IP参数优化</h3>
<p>在 <code>/etc/sysctl.conf</code> 中添加以下优化参数:</p>
<pre><code># 网络缓冲区设置
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.optmem_max = 65536
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

# TCP连接优化
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_slow_start_after_idle = 0

# 文件描述符设置
fs.file-max = 1000000
net.ipv4.ip_local_port_range = 1024 65535

# TCP拥塞控制
net.ipv4.tcp_congestion_control = bbr

# TCP快速打开
net.ipv4.tcp_fastopen = 3

# 开启TCP时间戳
net.ipv4.tcp_timestamps = 1

# 开启TCP窗口扩展
net.ipv4.tcp_window_scaling = 1
</code></pre>
<p>应用参数:</p>
<pre><code class="language-bash">sysctl -p
</code></pre>
<h3 id="_26">网络配置优化</h3>
<p>配置网卡多队列:</p>
<pre><code class="language-bash"># 检查网卡是否支持多队列
ethtool -l eth0

# 设置队列数量
ethtool -L eth0 combined 8
</code></pre>
<p>配置中断亲和性:</p>
<pre><code class="language-bash"># 检查网卡中断
cat /proc/interrupts | grep eth0

# 安装irqbalance
yum install -y irqbalance
systemctl start irqbalance
systemctl enable irqbalance
</code></pre>
<h3 id="_27">网络性能测试</h3>
<p>安装性能测试工具:</p>
<pre><code class="language-bash"># CentOS/RHEL
yum install -y iperf3 nethogs iftop

# Debian/Ubuntu
apt-get update
apt-get install -y iperf3 nethogs iftop
</code></pre>
<p>测试带宽:</p>
<pre><code class="language-bash"># 服务器端
iperf3 -s

# 客户端
iperf3 -c server_ip
</code></pre>
<p>查看网络使用情况:</p>
<pre><code class="language-bash"># 按进程查看网络使用
nethogs eth0

# 按连接查看流量
iftop -i eth0
</code></pre>












                
              </article>
            </div>
          
          
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
        </div>
        
      </main>
      
        <footer class="md-footer">
  
  <div class="md-footer-meta md-typeset">
    <div class="md-footer-meta__inner md-grid">
      <div class="md-copyright">
  
  
    Made with
    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
      Material for MkDocs
    </a>
  
</div>
      
        <div class="md-social">
  
    
    
    
    
      
      
    
    <a href="https://git.opsx.vip/docs/PythonFullStackGuide.git" target="_blank" rel="noopener" title="git.opsx.vip" class="md-social__link">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
    </a>
  
    
    
    
    
    <a href="mailto:admin@attacker.club" target="_blank" rel="noopener" title="" class="md-social__link">
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4l217.6 163.2c11.4 8.5 27 8.5 38.4 0l217.6-163.2c12.1-9.1 19.2-23.3 19.2-38.4 0-26.5-21.5-48-48-48zM0 176v208c0 35.3 28.7 64 64 64h384c35.3 0 64-28.7 64-64V176L294.4 339.2a63.9 63.9 0 0 1-76.8 0z"/></svg>
    </a>
  
</div>
      
    </div>
  </div>
</footer>
      
    </div>
    <div class="md-dialog" data-md-component="dialog">
      <div class="md-dialog__inner md-typeset"></div>
    </div>
    
    
    <script id="__config" type="application/json">{"base": "../..", "features": [], "search": "../../assets/javascripts/workers/search.f8cc74c7.min.js", "translations": {"clipboard.copied": "\u5df2\u590d\u5236", "clipboard.copy": "\u590d\u5236", "search.result.more.one": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.more.other": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 # \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.term.missing": "\u7f3a\u5c11", "select.version": "\u9009\u62e9\u5f53\u524d\u7248\u672c"}}</script>
    
    
      <script src="../../assets/javascripts/bundle.60a45f97.min.js"></script>
      
        <script src="../../js/prism.js"></script>
      
    
  </body>
</html>